




layui.use('layim', function(layim){

    var autoReplay = [
        '您好，我现在有事不在，一会再和您联系。',
        '你没发错吧？face[微笑] ',
        '洗澡中，请勿打扰，偷窥请购票，个体四十，团体八折，订票电话：一般人我不告诉他！face[哈哈] ',
        '你好，我是主人的美女秘书，有什么事就跟我说吧，等他回来我会转告他的。face[心] face[心] face[心] ',
        'face[威武] face[威武] face[威武] face[威武] ',
        '<（@￣︶￣@）>',
        '你要和我说话？你真的要和我说话？你确定自己想说吗？你一定非说不可吗？那你说吧，这是自动回复。',
        'face[黑线]  你慢慢说，别急……',
        '(*^__^*) face[嘻嘻] ，是贤心吗？'
    ];

    //基础配置
    layim.config({

        init: {
            url: '/chatController/findChatInfo'
            ,data: {}

        } //获取主面板列表信息，下文会做进一步介绍

        //获取群员接口（返回的数据格式见下文）
        ,members: {
            url: '/chatController/getMembers' //接口地址（返回的数据格式见下文）
            ,type: 'get' //默认get，一般可不填
            ,data: {} //额外参数
        }

        //上传图片接口（返回的数据格式见下文），若不开启图片上传，剔除该项即可
        ,uploadImage: {
            url: '' //接口地址
            ,type: 'post' //默认post
        }

        //上传文件接口（返回的数据格式见下文），若不开启文件上传，剔除该项即可
        ,uploadFile: {
            url: '' //接口地址
            ,type: 'post' //默认post
        }
        //扩展工具栏，下文会做进一步介绍（如果无需扩展，剔除该项即可）
        ,tool: [{
            alias: 'code' //工具别名
            ,title: '代码' //工具名称
            ,icon: '&#xe64e;' //工具图标，参考图标文档
        }]
        , notice: true
        ,title: "客服咨询" //自定义主面板最小化时的标题
        ,msgbox: layui.cache.dir + 'css/modules/layim/html/msgbox.html' //消息盒子页面地址，若不开启，剔除该项即可
        ,find: layui.cache.dir + 'css/modules/layim/html/find.html' //发现页面地址，若不开启，剔除该项即可
        ,chatLog: layui.cache.dir + 'css/modules/layim/html/chatlog.html' //聊天记录页面地址，若不开启，剔除该项即可
    });

    //监听查看群员
    layim.on('members', function(data){
        console.log(data);
    });

    //监听在线状态的切换事件
    layim.on('online', function(data){
        console.log(data);
    });

    //监听聊天窗口的切换
    layim.on('chatChange', function(data){
        console.log(data);
    });

    //监听发送消息
    layim.on('sendMessage', function(data){
        var To = data.to;
        //发送消息倒Socket服务，亦可以给socket添加监听器发送消息
        //演示自动回复
        setTimeout(function(){
            var obj = {};
            if(To.type === 'group'){
                obj = {
                    username: '群机器人'+(Math.random()*100|0)
                    ,avatar: layui.cache.dir + 'images/face/'+ (Math.random()*72|0) + '.gif'
                    ,id: To.id
                    ,type: To.type
                    ,content: autoReplay[Math.random()*9|0]
                }
            } else {
                obj = {
                    username: To.name
                    ,avatar: To.avatar
                    ,id: To.id
                    ,type: To.type
                    ,content: autoReplay[Math.random()*9|0]
                    ,timestamp: new Date().getTime()
                }
            }
            layim.getMessage(obj);
        }, 1000);
    });


    layim.chat({
        name: '在线客服-小苍'
        ,type: 'kefu'
        ,avatar: 'http://tva3.sinaimg.cn/crop.0.0.180.180.180/7f5f6861jw1e8qgp5bmzyj2050050aa8.jpg'
        ,id: -1
    });
    layim.chat({
        name: '在线客服-心心'
        ,type: 'kefu'
        ,avatar: 'http://tva1.sinaimg.cn/crop.219.144.555.555.180/0068iARejw8esk724mra6j30rs0rstap.jpg'
        ,id: -2
    });
    layim.setChatMin();


    //建立WebSocket通讯
    //注意：如果你要兼容ie8+，建议你采用 socket.io 的版本。下面是以原生WS为例
    var socket
    if ('WebSocket' in window) {
        var currentUserId = $("#currentUserId").val();
        if (currentUserId == undefined) {
            return ;
        }
        socket = new WebSocket('ws://localhost:8080/myHandler?myid='+currentUserId);
        socket.addEventListener('open' , function (e) {

                layim.on('sendMessage', function(res){
                    var mine = res.mine; //包含我发送的消息及我的信息
//mine的结构如下：
                    /*{
                        avatar: "avatar.jpg" //我的头像
                        ,content: "你好吗" //消息内容
                        ,id: "100000" //我的id
                        ,mine: true //是否我发送的消息
                        ,username: "纸飞机" //我的昵称
                    }*/

                    var to = res.to; //对方的信息
                    to.type = "friend";
//to的结构如下：
                    /* {
                         avatar: "avatar.jpg"
                             ,id: "100001"
                         ,name: "贤心"
                         ,sign: "这些都是测试数据，实际使用请严格按照该格式返回"
                         ,type: "friend" //聊天类型，一般分friend和group两种，group即群聊
                         ,username: "贤心"
                     }*/
                    //监听到上述消息后，就可以轻松地发送socket了，如：
                    socket.send(JSON.stringify({
                        type: 'chatMessage' //随便定义，用于在服务端区分消息类型
                        ,data: res
                    }));
                });
            }
        )
    } else {
        alert('当前浏览器不支持WebSocket功能，请更换浏览器访问。');
    }

    //连接成功时触发
    socket.onopen = function(){
        console.log("通讯连接成功");
    };
    //连接失败时触发
    socket.onerror = function () {
        console.log("通讯连接失败!");
    };
    //连接关闭时触发
    socket.onclose= function(e){
        console.log("通讯连接关闭:" + e.code);
    };

    //发送一个消息
    //socket.send('Hi Server, I am LayIM!');
    //更多情况下，一般是传递一个JSON
   /* socket.send(JSON.stringify({
        type: '' //随便定义，用于在服务端区分消息类型
        ,data: {}
    }));*/

    /*socket.onmessage = function (evente) {
        layim.getMessage({
            username: e.data.mine.username //消息来源用户名
            ,avatar: e.data.mine.avatar //消息来源用户头像
            ,id: e.data.mine.id //消息的来源ID（如果是私聊，则是用户id，如果是群聊，则是群组id）
            ,type: "friend" //聊天窗口来源类型，从发送消息传递的to里面获取
            ,content: e.data.mine.content //消息内容
            ,cid: 0 //消息id，可不传。除非你要对消息进行一些操作（如撤回）
            ,mine: false //是否我发送的消息，如果为true，则会显示在右方
            ,fromid: "1434508918977036288" //消息的发送者id（比如群组中的某个消息发送者），可用于自动解决浏览器多窗口时的一些问题
            ,timestamp: new Date().getTime() //服务端时间戳毫秒数。注意：如果你返回的是标准的 unix 时间戳，记得要 *1000
        });
       socket.close();
    }*/
    socket.addEventListener('message' , function (e) {
        console.log(e.data);
        var jsonData = JSON.parse(e.data);
        //监听收到的消息
            //res为接受到的值，如 {"emit": "messageName", "data": {}}
            //emit即为发出的事件名，用于区分不同的消息
            layim.getMessage(

                    {
                        username:jsonData.data.mine.username //消息来源用户名
                        ,avatar:jsonData.data.mine.avatar //消息来源用户头像
                        ,id: jsonData.data.mine.id //消息的来源ID（如果是私聊，则是用户id，如果是群聊，则是群组id）
                        ,type: "friend" //聊天窗口来源类型，从发送消息传递的to里面获取
                        ,content: jsonData.data.mine.content //消息内容
                        ,cid: 0 //消息id，可不传。除非你要对消息进行一些操作（如撤回）
                        ,mine: false //是否我发送的消息，如果为true，则会显示在右方
                        ,fromid: "1434508918977036288" //消息的发送者id（比如群组中的某个消息发送者），可用于自动解决浏览器多窗口时的一些问题
                        ,timestamp: new Date().getTime() //服务端时间戳毫秒数。注意：如果你返回的是标准的 unix 时间戳，记得要 *1000
                    }
               );
        //};
    })
});









